package com.iprojectmanager.managers;

/**
 * @author Trejo Sandoval Sergio Alberto
 */

import javax.persistence.*;
import java.util.*;
import com.iprojectmanager.entities.*;

public class UserManager extends IProjectManager
{
    public UserManager()
    {
        super();
    }

    public Usuario login(String user, String password)
    {
        EntityManager em = emf.createEntityManager();

        List users = em.createQuery("Select x From Usuario x Where x.login = '" + user +
                                    "' And x.password = '" + password + "'").getResultList();
        
        return (users.size() != 0)?(Usuario)users.get(0) : null;
    }
    
    public Usuario getUsuario(int id)
    {
        EntityManager em = emf.createEntityManager();

        List users = em.createQuery("Select x From Usuario x Where x.id = " + id ).getResultList();
        
        return (users.size() != 0)?(Usuario)users.get(0) : null;
    }
    
    public List<LiderProyecto> getLideres()
    {
        EntityManager em = emf.createEntityManager();
        List users = em.createQuery("Select x From LiderProyecto x").getResultList();
        ArrayList<LiderProyecto> lideres = new ArrayList<LiderProyecto>();

            for(int inx=0;inx<users.size();inx++)
            {
                lideres.add((LiderProyecto)users.get(inx));
            }
        
        return lideres;
    }
    
    public ArrayList<Usuario> getUsuarios()
    {
        EntityManager em = emf.createEntityManager();
        List users = em.createQuery("Select x From Usuario x").getResultList();
        ArrayList<Usuario> lideres = new ArrayList<Usuario>();

            for(int inx=0;inx<users.size();inx++)
            {
                lideres.add((Usuario)users.get(inx));
            }
        
        return lideres;
    }
    
    public boolean contains(String nombre,String app,String apm)
    {
        EntityManager em = emf.createEntityManager();
        List users = em.createQuery("Select x From Usuario x Where x.nombre = '" + nombre + 
                                    "' and x.apellidoPaterno = '" + app + 
                                    "' and x.apellidoMaterno = '" + apm + "'").getResultList();
        
        return (users.size() > 0)?true:false;
    }
    
    public ArrayList<IntegranteProyecto> getIntegrantesFromProyecto(long idProj)
    {
        EntityManager em = emf.createEntityManager();
        List users = em.createQuery("Select x From IntegranteProyecto x Where x.proyecto.id = " + idProj).getResultList();
        ArrayList<IntegranteProyecto> lideres = new ArrayList<IntegranteProyecto>();

            for(int inx=0;inx<users.size();inx++)
            {
                lideres.add((IntegranteProyecto)users.get(inx));
            }
        
        return lideres;
    }
    
    public ArrayList<IntegranteProyecto> getIntegrantes()
    {
        EntityManager em = emf.createEntityManager();
        List users = em.createQuery("Select x From IntegranteProyecto x").getResultList();
        ArrayList<IntegranteProyecto> lideres = new ArrayList<IntegranteProyecto>();

            for(int inx=0;inx<users.size();inx++)
            {
                lideres.add((IntegranteProyecto)users.get(inx));
            }
        
        return lideres;
    }
    
    public ArrayList<Usuario> getIntegrantes(int i)
    {
        EntityManager em = emf.createEntityManager();
        List users = em.createQuery("Select x From IntegranteProyecto x").getResultList();
        ArrayList<Usuario> lideres = new ArrayList<Usuario>();

            for(int inx=0;inx<users.size();inx++)
            {
                lideres.add((IntegranteProyecto)users.get(inx));
            }
        
        return lideres;
    }
}
